package com.feicheng.wxapi.pay.transfer.model;

import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.cipher.Encryption;
import com.wechat.pay.java.core.util.StringUtil;
import com.wechat.pay.java.service.transferbatch.model.InitiateBatchTransferRequest;
import com.wechat.pay.java.service.transferbatch.model.TransferDetailInput;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.UnaryOperator;
public class TransferBillsRequest {

    public TransferBillsRequest() {
    }
    @SerializedName("appid")
    private String appid;

    @SerializedName("out_bill_no")
    private String outBillNo;

    @SerializedName("transfer_scene_id")
    private String transferSceneId;

//    openid 　必填 string(64);
    @SerializedName("openid")
    private String openid;

//    user_name 　选填 string;
    @SerializedName("user_name")
    private String userName;

//    transfer_amount 　必填 integer;
    @SerializedName("transfer_amount")
    private Integer transferAmount;

//    transfer_remark 　必填 string(32);
    @SerializedName("transfer_remark")
    private String transferRemark;

//    notify_url 　选填 string(256);
    @SerializedName("notify_url")
    private String notifyUrl;

//    user_recv_perception 　选填 string;
    @SerializedName("user_recv_perception")
    private String userRecvPerception;

    //    transfer_scene_report_infos 　必填
    @Encryption
    @SerializedName("transfer_scene_report_infos")
    private List<TransferSceneReportInfo> transferSceneReportInfos = new ArrayList();

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class TransferBillsRequest {\n");
        sb.append("    appid: ").append(StringUtil.toIndentedString(this.appid)).append("\n");
        sb.append("    outBillNo: ").append(StringUtil.toIndentedString(this.outBillNo)).append("\n");
        sb.append("    transferSceneId: ").append(StringUtil.toIndentedString(this.transferSceneId)).append("\n");
        sb.append("    openid: ").append(StringUtil.toIndentedString(this.openid)).append("\n");
        sb.append("    userName: ").append(StringUtil.toIndentedString(this.userName)).append("\n");
        sb.append("    transferAmount: ").append(StringUtil.toIndentedString(this.transferAmount)).append("\n");
        sb.append("    transferRemark: ").append(StringUtil.toIndentedString(this.transferRemark)).append("\n");
        sb.append("    notifyUrl: ").append(StringUtil.toIndentedString(this.notifyUrl)).append("\n");
        sb.append("    userRecvPerception: ").append(StringUtil.toIndentedString(this.userRecvPerception)).append("\n");
        sb.append("    transferSceneReportInfos: ").append(StringUtil.toIndentedString(this.transferSceneReportInfos)).append("\n");

        sb.append("}");
        return sb.toString();
    }

    public TransferBillsRequest cloneWithCipher(UnaryOperator<String> s) {
        TransferBillsRequest copy = new TransferBillsRequest();
        copy.appid = this.appid;
        copy.outBillNo = this.outBillNo;
        copy.transferSceneId = this.transferSceneId;
        copy.openid = this.openid;
        copy.userName = this.userName;
        copy.transferAmount = this.transferAmount;
        copy.transferRemark = this.transferRemark;
        copy.notifyUrl = this.notifyUrl;
        copy.userRecvPerception = this.userRecvPerception;
        if (this.transferSceneReportInfos != null && this.transferSceneReportInfos.size() != 0) {
            copy.transferSceneReportInfos = new ArrayList();
            Iterator var3 = this.transferSceneReportInfos.iterator();

            while(var3.hasNext()) {
                TransferSceneReportInfo val = (TransferSceneReportInfo)var3.next();
                if (val != null) {
                    copy.transferSceneReportInfos.add(val.cloneWithCipher(s));
                }
            }
        }
        return copy;
    }

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getOutBillNo() {
        return outBillNo;
    }

    public void setOutBillNo(String outBillNo) {
        this.outBillNo = outBillNo;
    }

    public String getTransferSceneId() {
        return transferSceneId;
    }

    public void setTransferSceneId(String transferSceneId) {
        this.transferSceneId = transferSceneId;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getTransferAmount() {
        return transferAmount;
    }

    public void setTransferAmount(Integer transferAmount) {
        this.transferAmount = transferAmount;
    }

    public String getTransferRemark() {
        return transferRemark;
    }

    public void setTransferRemark(String transferRemark) {
        this.transferRemark = transferRemark;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getUserRecvPerception() {
        return userRecvPerception;
    }

    public void setUserRecvPerception(String userRecvPerception) {
        this.userRecvPerception = userRecvPerception;
    }

    public List<TransferSceneReportInfo> getTransferSceneReportInfos() {
        return transferSceneReportInfos;
    }

    public void setTransferSceneReportInfos(List<TransferSceneReportInfo> transferSceneReportInfos) {
        this.transferSceneReportInfos = transferSceneReportInfos;
    }






}
